package com.futureCloudMOM.core.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.futureCloudMOM.core.entity.FBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WMS_InvoiceMain", description = "业务订单主表")
@TableName(value = "WMS_InvoiceMain")
public class WmsInvoiceMain extends FBaseEntity implements Serializable {

    
    @NotBlank(message="[单据号]不能为空")
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("单据号")
    @Length(max= 500,message="编码长度不能超过500")
    @TableField(value = "billNo")
    private String billNo;
    
    @NotNull(message="[制单日期]不能为空")
    @ApiModelProperty("制单日期")
    @TableField(value = "billDate")
    private Date billDate;
    
    @NotNull(message="[单据类型]不能为空")
    @ApiModelProperty("单据类型")
    @TableField(value = "billType")
    private Long billType;
    
    @NotNull(message="[其他入库等业务特殊类型（）]不能为空")
    @ApiModelProperty("其他入库等业务特殊类型（）")
    @TableField(value = "specialType")
    private Long specialType;
    
    @ApiModelProperty("移出仓库ID")
    @TableField(value = "fromWHID")
    private Long fromWHID;
    
    @ApiModelProperty("部门ID")
    @TableField(value = "deptId")
    private Long deptId;
    
    @ApiModelProperty("移入仓库ID")
    @TableField(value = "toWHID")
    private Long toWHID;
    
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("备注")
    @Length(max= 500,message="编码长度不能超过500")
    @TableField(value = "remark")
    private String remark;
    
    @NotNull(message="[状态]不能为空")
    @ApiModelProperty("状态")
    @TableField(value = "status")
    private Long status;
    
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("类型")
    @Length(max= 500,message="编码长度不能超过500")
    @TableField(value = "type")
    private String type;
    
    @ApiModelProperty("打印条码数量")
    @TableField(value = "printCount")
    private Long printCount;
    
    @NotNull(message="[发生方类型id]不能为空")
    @ApiModelProperty("发生方类型id")
    @TableField(value = "roleTypeId")
    private Long roleTypeId;
    
    @ApiModelProperty("发生方id")
    @TableField(value = "roleId")
    private Long roleId;
    
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("审核人")
    @Length(max= 500,message="编码长度不能超过500")
    @TableField(value = "checker")
    private String checker;
    
    @ApiModelProperty("审核时间")
    @TableField(value = "checkDate")
    private Date checkDate;
    
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("关闭人")
    @Length(max= 500,message="编码长度不能超过500")
    @TableField(value = "closer")
    private String closer;
    
    @ApiModelProperty("关闭时间")
    @TableField(value = "closeDate")
    private Date closeDate;

    @ApiModelProperty("业务订单子表数据")
//    线程安全的集合 Vector 根据业务调整
//    private Vector<WmsInvoiceSub> list;
    private List<WmsInvoiceSub> list;

    @ApiModelProperty("需要删除的子表Id")
    private List<Long> ids;



}

